//
//  StatusListViewModel.swift
//  GZWeibo
//
//  Created by Apple on 15/9/25.
//  Copyright © 2015年 itcast. All rights reserved.
//

import UIKit

/// 微博`数据的列表`视图模型
/**
    1. 没有继承自 NSObject - 如果用 OC，继承一下就可以
    2. 没有使用单例 - 因为用户每一次刷新微博，都是要最新的
        用户账户的用单例，因为只有一个账户，避免重复从沙盒加载归档文件 

    日常开发中，使用`单例`要谨慎，单例都是为了解决性能问题！
*/
class StatusListViewModel {
    
    /// 微博数据的数组懒加载
    lazy var statuses = [StatusViewModel]()
    
    // MARK: - 网络方法
    /// 加载微博数组
    func loadStatus(finished: (error: NSError?)->()) {
        NetworkTools.sharedTools.loadStatus { (result, error) -> () in
            
            if error != nil {
                finished(error: error)
                return
            }
            
            // 1. 取出网络返回字典中的微博数组
            guard let array = result?["statuses"] as? [[String: AnyObject]] else {
                finished(error: NSError(domain: "cn.itcast.error", code: -1001, userInfo: ["message": "数据格式错误"]))
                return
            }
            
            // 2. 遍历数组，字典转模型
            // 1> 创建一个可变的微博模型数组
            var arrayM = [StatusViewModel]()
            
            // 2> 遍历
            for dict in array {
                arrayM.append(StatusViewModel(status: Status(dict: dict)))
            }
            
            // 3> 拼接数组
            self.statuses += arrayM
            
            // 4> 通知调用方 － 网络访问结束
            finished(error: nil)
        }
    }
}
